GORM系列之创建数据 | 您所在的位置:网站首页 › gorm update 传map › GORM系列之创建数据 |
一、基本创建
(一)单条数据创建
模型表
type Base struct {
ID int
Name string
Age int
}
方法一 通过数据的指针来创建
base := Base{Name: "lily", Age: 18}
result := db.Create(&base) //通过数据指针进行创建
fmt.Println(result.Error) // 返回 error
fmt.Println(result.RowsAffected) // 返回插入记录的条数
方法二 根据 Map 创建
db.Model(&Base{}).Create(map[string]interface{}{
"Name": "kiki",
"Age": 20,
})
(二)批量创建
方法一 通过数据的指针来创建
要有效地插入大量记录,请将一个 slice 传递给 create方法。 GORM 将生成单独一条SQL语句来插入所有数据,并回填主键的值,钩子方法也会被调用。 var baseUsers = []Base{ { Name: "kiki", Age: 20, }, { Name: "wan", Age: 22, }, } db.Create(&baseUsers) // 创建多条记录 for _, user := range baseUsers { fmt.Println(user.ID) //回填主键的值 }使用 CreateInBatches分批创建时,你可以指定每批的数量 var baseUsers = []Base{ { Name: "kiki", Age: 20, }, { Name: "wan", Age: 22, }, ... } db.CreateInBatches(&baseUsers, 100) // 每次插入100条 方法二 根据Map创建 db.Model(&Base{}).Create([]map[string]interface{}{ { "Name": "kiki", "Age": 20, }, { "Name": "wan", "Age": 22, }, }) 二、创建进阶 (一)指定字段创建 // 创建记录并更新给出的字段 baseUser := Base{Name: "lily", Age: 18} //db.Select("Name", "Age").Create(&baseUser) // INSERT INTO `Base` (`name`,`age`) VALUES ("lily", 18) // 创建一个记录且一同忽略传递给略去的字段值, 此时Name取默认值为空 db.Omit("Name").Create(&baseUser) // INSERT INTO `Base` (`age`) VALUES (18) (二)关联创建如果一个模型嵌套另一个模型,那么怎么创建数据呢? 模型表 type Base struct { ID int Name string Age int `gorm:"default:20"` //指定默认值为20 } type User struct { Base Base `gorm:"embedded;embeddedPrefix:base_"` NickName string } 创建 // 关联创建, 如果没写字段使用默认值创建 db.Create(&User{ NickName: "小花", Base: Base{ Name: "xiaohua", }, })也可以通过 Select、 Omit 跳过关联保存,例如: db.Omit("Base").Create(&User) // 跳过所有关联 db.Omit(clause.Associations).Create(&User)
|
CopyRight 2018-2019 实验室设备网 版权所有 |